#include "vector_binario.h"
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>

void print_test(char* name, bool result)
{
    printf("%s: %s\n", name, result? "OK" : "ERROR");
}

/* Prueba que las primitivas del vector funcionen correctamente. */
void prueba_VectorBinario()
{
	int largo;
	largo=5;
	vector_binario_t* vector=v_binario_crear(largo);
	print_test("Pruebo que el vector esta vacio", v_binario_largo(vector) == 0); 
    v_binario_agregar(vector,1);
    print_test("Pruebo que el vector contine 1 bit luego de agregar un 1 al vector ", v_binario_largo(vector) == 1 );
     v_binario_agregar(vector,0);
    print_test("Pruebo que el vector contine 2 bit luego de agregar un 0 al vector ", v_binario_largo(vector) == 2 );
     v_binario_agregar(vector,1);
    print_test("Pruebo que el vector contine 3 bit luego de agregar un 1 al vector ", v_binario_largo(vector) == 3 );
    v_binario_agregar(vector,0);
    print_test("Pruebo que el vector contine 4 bit luego de agregar un 1 al vector ", v_binario_largo(vector) == 4 );
   
    print_test("Pruebo que el primer bit del vector es un 1 ", v_binario_obtener(vector,0)==1);    
    print_test("Pruebo que el segundo bit del vector es un 0 ", v_binario_obtener(vector,1)==0);
    print_test("Pruebo que el tercer bit del vector es un 1 ", v_binario_obtener(vector,2)==1);
    print_test("Pruebo que el cuarto bit del vector es un 0 ", v_binario_obtener(vector,3)==0);
    printf("El vector es: "); v_binario_imprimir(vector);
    v_binario_invertir(vector);
    printf("\nEl vector invertido es: "); v_binario_imprimir(vector);
    v_binario_destruir(vector);
}



/* ******************************************************************
 *                        PROGRAMA PRINCIPAL
 * *****************************************************************/

/* Programa principal. */
int main(void) {
	printf ("\nCOMIENZO DE PRUEBAS Vector binario.\n\n");

    /* Ejecuta todas las pruebas unitarias. */
    prueba_VectorBinario();

	printf ("\nFIN DE PRUEBAS Vector binario.\n\n");
    return 0;
}




